import http from 'wechat-http'
http.baseURL = 'https://live-api.itheima.net'


// 请求拦截器
http.intercept.request = (options) => {
  // 扩展头信息
  const defaultHeader = {}
  // 身份认证
  defaultHeader.Authorization = 'Bearer ' + getApp().token
  // 与默认头信息合并
  options.header = Object.assign({}, defaultHeader, options.header)
  // 处理后的请求参数
  return options
}



// 响应拦截器
http.intercept.response = async ({ data, config }) => {
  // token过期
  if (data.code === 401) {
    const app = getApp()
    if (config.url.includes('/refreshToken')) {
      // 获取当前页面的路径，保证登录成功后能跳回到原来页面
      // 获取页面栈
      const pageStack = getCurrentPages()
      // 获取页面栈最后一位
      const currentPage = pageStack.pop()
      // 取出url地址
      const redirectURL = currentPage.route
      // 清空本地token
      wx.clearStorageSync()
      wx.redirectTo({
        url: '/pages/login/index?redirectURL=/' + redirectURL
      })
      return wx.utils.toast('登录信息失效，请重新登录！')
    }
    // 请求最新token
    const res = await http({
      url: '/refreshToken',
      method: 'POST',
      header: {
        Authorization: 'Bearer ' + app.refreshToken,
      }
    })
    if (res.code !== 10000) return wx.utils.toast('登录信息失效，请重新登录！')
    app.setToken('token', res.data.token)
    app.setToken('refreshToken', res.data.refreshToken)
    // 利用新token重新请求之前失败接口
    config = Object.assign(config, {
      header: {
        Authorization: 'Bearer ' + app.token,
      }
    })
    return http(config)


  }
  return data
}

// 挂载全局对象
wx.http = http